package proteusadm;

import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author Gui
 */
public class Banco {

    /**
     * @param args the command line arguments
     */
    private static String url = "jdbc:postgresql://localhost:5432/proteusadm";
    private static String usuario = "postgres";
    private static String senha = "0000";
    private static Connection con = null;

    public static int ultimo_codigo() {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();
            ResultSet rs = stm.executeQuery("SELECT codigo FROM produtos ORDER BY codigo DESC LIMIT 1 ");
            con.close();
            rs.next();

            return rs.getInt("codigo");

        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
                return 0;

            }

        }
    }

    public static Produto buscaCodigo(int codigo) {
        Produto prod = new Produto();
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT codigo,nome,descricao,preco_c,preco_v,qtd FROM produtos WHERE codigo =" + codigo);

            rs.next();

            prod.setCodigo(rs.getInt("codigo"));
            prod.setNome(rs.getString("nome"));
            prod.setDescricao(rs.getString("descricao"));
            prod.setPreco_c(rs.getDouble("preco_c"));
            prod.setPreco_v(rs.getDouble("preco_v"));
            prod.setQtd(rs.getInt("qtd"));

            con.close();
            return prod;

        } catch (Exception e) {
            e.printStackTrace();
            return prod;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    public static ProdutoOrcamento buscaCodigoOrcamento(int codigo) {
        ProdutoOrcamento prod = new ProdutoOrcamento();
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT codigo,nome,descricao,preco_c,preco_v,qtd FROM produtos WHERE codigo =" + codigo);

            rs.next();

            prod.setCodigo(rs.getInt("codigo"));
            prod.setNome(rs.getString("nome"));
            prod.setDescricao(rs.getString("descricao"));
            prod.setPreco_c(rs.getDouble("preco_c"));
            prod.setPreco_v(rs.getDouble("preco_v"));
            prod.setQtd(rs.getInt("qtd"));
          
            con.close();
            return prod;

        } catch (Exception e) {
            e.printStackTrace();
            return prod;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }


    public static ArrayList buscaNome(String nome) {
        ArrayList list = new ArrayList();
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT * FROM produtos WHERE nome LIKE '%" + nome.toLowerCase() + "%'");


            while (rs.next()) {
                Produto prod = new Produto();
                prod.setCodigo(rs.getInt("codigo"));
                prod.setNome(rs.getString("nome"));
                prod.setDescricao(rs.getString("descricao"));
                prod.setPreco_c(rs.getDouble("preco_c"));
                prod.setPreco_v(rs.getDouble("preco_v"));
                prod.setQtd(rs.getInt("qtd"));
                list.add(prod);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return list;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static ArrayList buscaPreco(double preco) {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT codigo,nome,descricao,preco_c,preco_v,qtd FROM produtos WHERE preco_v = " + preco);

            ArrayList list = new ArrayList();
            while (rs.next()) {
                Produto prod = new Produto();
                prod.setCodigo(rs.getInt("codigo"));
                prod.setNome(rs.getString("nome"));
                prod.setDescricao(rs.getString("descricao"));
                prod.setPreco_c(rs.getDouble("preco_c"));
                prod.setPreco_v(rs.getDouble("preco_v"));
                prod.setQtd(rs.getInt("qtd"));
                list.add(prod);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static ArrayList buscaPrecoEntre(double preco, double preco2) {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT codigo,nome,descricao,preco_c,preco_v,qtd FROM produtos WHERE preco_v BETWEEN " + preco + " AND " + preco2);

            ArrayList list = new ArrayList();
            while (rs.next()) {
                Produto prod = new Produto();
                prod.setCodigo(rs.getInt("codigo"));
                prod.setNome(rs.getString("nome"));
                prod.setDescricao(rs.getString("descricao"));
                prod.setPreco_c(rs.getDouble("preco_c"));
                prod.setPreco_v(rs.getDouble("preco_v"));
                prod.setQtd(rs.getInt("qtd"));
                list.add(prod);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static ArrayList buscaNomePrecoEntre(String nome, double preco, double preco2) {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT codigo,nome,descricao,preco_c,preco_v,qtd FROM produtos WHERE nome LIKE '%" + nome.toLowerCase() + "%' AND preco_v BETWEEN " + preco + " AND " + preco2);

            ArrayList list = new ArrayList();
            while (rs.next()) {
                Produto prod = new Produto();
                prod.setCodigo(rs.getInt("codigo"));
                prod.setNome(rs.getString("nome"));
                prod.setDescricao(rs.getString("descricao"));
                prod.setPreco_c(rs.getDouble("preco_c"));
                prod.setPreco_v(rs.getDouble("preco_v"));
                prod.setQtd(rs.getInt("qtd"));
                list.add(prod);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static ArrayList buscaCodigoPrecoEntre(int cod, double preco, double preco2) {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT codigo,nome,descricao,preco_c,preco_v,qtd FROM produtos WHERE codigo = " + cod + " AND preco_v BETWEEN " + preco + " AND " + preco2);

            ArrayList list = new ArrayList();
            while (rs.next()) {
                Produto prod = new Produto();
                prod.setCodigo(rs.getInt("codigo"));
                prod.setNome(rs.getString("nome"));
                prod.setDescricao(rs.getString("descricao"));
                prod.setPreco_c(rs.getDouble("preco_c"));
                prod.setPreco_v(rs.getDouble("preco_v"));
                prod.setQtd(rs.getInt("qtd"));
                list.add(prod);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static boolean addProduto(Produto prod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("INSERT INTO produtos VALUES (" + prod.getCodigo() + ", '" + prod.getNome().toLowerCase() + "', '" + prod.getDescricao() + "',"
                    + prod.getPreco_c() + ", " + prod.getPreco_v() + ", " + prod.getQtd() + ")");
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public static boolean editaProduto(Produto prod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("UPDATE produtos SET nome = '" + prod.getNome().toLowerCase() + "',descricao = '" + prod.getDescricao() + "', preco_c ="
                    + prod.getPreco_c() + ", preco_v =" + prod.getPreco_v() + ", qtd = " + prod.getQtd() + " WHERE codigo =" + prod.getCodigo());


            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public static boolean deletaProduto(int cod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("DELETE FROM produtos VALUES WHERE codigo =" + cod);
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static boolean deletaBanco() {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("DELETE FROM produtos");
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static boolean isTruePassword(String s) {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");


            Statement stm = con.createStatement();
            ResultSet rs = stm.executeQuery("SELECT senhas FROM user WHERE senhas = '" + senha + "'");
            con.close();
//           rs.next();
            if (rs.getString("senhas").equals(s)) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public static boolean addCliente(Cliente prod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("INSERT INTO clientes VALUES (" + prod.getCodigo() + ", '" + prod.getNome().toLowerCase() + "', '" + prod.getSobrenome().toLowerCase() + "', '"
                    + prod.getEndereco() + "', '" + prod.getCPF() + "', '" + prod.getTelefone() + "', '" + prod.getCelular() + "')");
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public static boolean editaCliente(Cliente prod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("UPDATE clientes SET nome = '" + prod.getNome().toLowerCase() + "', sobrenome = '" + prod.getSobrenome() + "', endereco = '" + prod.getEndereco() + "', cpf ='"
                    + prod.getCPF() + "', telefone ='" + prod.getTelefone() + "', celular = '" + prod.getCelular() + "' WHERE codigo =" + prod.getCodigo());


            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public static boolean deletaCliente(int cod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("DELETE FROM clientes VALUES WHERE codigo =" + cod);
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static ArrayList buscaCliente(String nome) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT codigo,nome,sobrenome FROM clientes WHERE nome LIKE '%" + nome.toLowerCase() + "%'");
            ArrayList list = new ArrayList();
            while (rs.next()) {
                Cliente p = new Cliente();
                p.setCodigo(rs.getInt("codigo"));
                p.setNome(rs.getString("nome"));
                p.setSobrenome(rs.getString("sobrenome"));

                list.add(p);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static Cliente buscaClienteCod(int cod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT * FROM clientes WHERE codigo =" + cod);

            rs.next();
            Cliente p = new Cliente();
            p.setCodigo(rs.getInt("codigo"));
            p.setNome(rs.getString("nome"));
            p.setSobrenome(rs.getString("sobrenome"));
            p.setEndereco(rs.getString("endereco"));
            p.setCPF(rs.getString("cpf"));
            p.setTelefone(rs.getString("telefone"));
            p.setCelular(rs.getString("celular"));


            con.close();
            return p;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static int ultimo_codigoCliente() {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();
            ResultSet rs = stm.executeQuery("SELECT codigo FROM clientes ORDER BY codigo DESC LIMIT 1 ");
            con.close();
            rs.next();

            return rs.getInt("codigo");

        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
                return 0;

            }

        }
    }

    public static boolean addUser(User prod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("INSERT INTO users VALUES ('" + prod.getUser() + "', '" + prod.getPassword() + "', " + prod.getEditar_p() + ","
                    + prod.getVer_r() + ", " + prod.getEditar_c() + ")");
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public static User buscaUser(String nome, String password) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT * FROM users WHERE username ='" + nome + "' AND password = '" + password + "'");

            rs.next();
//                System.out.println(rs.toString());
            User p = new User();
            p.setUser(rs.getString("username"));
            p.setPassword(rs.getString("password"));
            p.setEditar_p(rs.getBoolean("editar_p"));
            p.setVer_r(rs.getBoolean("ver_r"));
            p.setEditar_c(rs.getBoolean("editar_c"));

            con.close();
            return p;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static int ultimo_idOrcamento() {
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();
            ResultSet rs = stm.executeQuery("SELECT id FROM orcamento ORDER BY id DESC LIMIT 1 ");
            con.close();
            rs.next();

            return 1+(rs.getInt("id"));

        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
                return 0;

            }

        }
    }

    public static ArrayList buscaOrcamento(String nome) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT * FROM orcamento WHERE nome LIKE '%" + nome.toLowerCase() + "%'");

            ArrayList list = new ArrayList();
            while (rs.next()) {
                Orcamento p = new Orcamento();
                p.setID(rs.getInt("id"));
                p.setNome(rs.getString("nome"));
                int aux = rs.getInt("id_cliente");
                if (aux != 0) {
                    p.setCliente(Banco.buscaClienteCod(aux));
                }
                String[] prod = rs.getString("prod").split(";");
                String[] quant = rs.getString("quant").split(";");
                for (int i = 0; i < prod.length; i++) {
                    ProdutoOrcamento po = buscaAuxOrcamento(Integer.parseInt(prod[i]));
                    po.setqtdUsada(Integer.parseInt(quant[i]));
                    po.calculaPreco_t();

                    p.getProd().add(po);
                }


                list.add(p);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private static ProdutoOrcamento buscaAuxOrcamento(int codigo) {
        ProdutoOrcamento prod = new ProdutoOrcamento();
        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT descricao,preco_v FROM produtos WHERE codigo =" + codigo);

            rs.next();
            prod.setCodigo(codigo);
            prod.setDescricao(rs.getString("descricao"));
            prod.setPreco_v(rs.getDouble("preco_v"));

            con.close();
            return prod;

        } catch (Exception e) {
            e.printStackTrace();
            return prod;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static ArrayList buscaOrcamentoCliente(String nome) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT * FROM orcamento WHERE nome_cliente LIKE '%" + nome.toLowerCase() + "%'");

            ArrayList list = new ArrayList();
            while (rs.next()) {
                Orcamento p = new Orcamento();
                p.setID(rs.getInt("id"));
                p.setNome(rs.getString("nome"));
                int aux = rs.getInt("id_cliente");
                if (aux != 0) {
                    p.setCliente(Banco.buscaClienteCod(aux));
                }
                String[] prod = rs.getString("prod").split(";");
                String[] quant = rs.getString("quant").split(";");
                for (int i = 0; i < prod.length; i++) {
                    ProdutoOrcamento po = buscaAuxOrcamento(Integer.parseInt(prod[i]));
                    po.setqtdUsada(Integer.parseInt(quant[i]));
                    po.calculaPreco_t();

                    p.getProd().add(po);
                }

                list.add(p);
            }

            con.close();
            return list;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static Orcamento buscaOrcamentoID(int id) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//            System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            ResultSet rs = stm.executeQuery("SELECT * FROM orcamento WHERE id = " + id);

            rs.next();
            Orcamento p = new Orcamento();
            p.setID(rs.getInt("id"));
            p.setNome(rs.getString("nome"));
            int aux = rs.getInt("id_cliente");
            if (aux != 0) {
                p.setCliente(Banco.buscaClienteCod(aux));
            }
            String[] prod = rs.getString("prod").split(";");
            String[] quant = rs.getString("quant").split(";");
            for (int i = 0; i < prod.length; i++) {
                ProdutoOrcamento po = buscaAuxOrcamento(Integer.parseInt(prod[i]));
                po.setqtdUsada(Integer.parseInt(quant[i]));
                po.calculaPreco_t();

                p.getProd().add(po);
            }


            con.close();
            return p;

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    public static boolean addOrcamento(Orcamento prod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            ProdutoOrcamento p = (ProdutoOrcamento) prod.getProd().get(0);
            String produtos = p.getCodigo() + ";";
            String quantidades = p.getqtdUsada() + ";";
            for (int i = 1; i < prod.getProd().size(); i++) {
                p = (ProdutoOrcamento) prod.getProd().get(i);
                produtos = produtos + p.getCodigo() + ";";
                quantidades = quantidades + p.getqtdUsada() + ";";
            }

            Statement stm = con.createStatement();

            stm.executeUpdate("INSERT INTO orcamento VALUES (" + prod.getID() + ", '" + prod.getNome().toLowerCase() + "', '" + prod.getCliente().getNome().toLowerCase() + " " + prod.getCliente().getSobrenome().toLowerCase() + "',"
                    + prod.getCliente().getCodigo() + ", '" + produtos + "', '" + quantidades + "')");
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public static boolean editaOrcamento(Orcamento prod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            ProdutoOrcamento p = (ProdutoOrcamento) prod.getProd().get(0);
            String produtos = p.getDescricao() + ";";
            String quantidades = p.getQtd() + ";";
            for (int i = 1; i < prod.getProd().size(); i++) {
                p = (ProdutoOrcamento) prod.getProd().get(i);
                produtos = produtos + p.getDescricao() + ";";
                quantidades = quantidades + p.getqtdUsada() + ";";
            }

            Statement stm = con.createStatement();

            stm.executeUpdate("UPDATE orcamento SET nome = '" + prod.getNome().toLowerCase() + "', nome_cliente = '" + prod.getCliente().getNome().toLowerCase() + " " + prod.getCliente().getSobrenome().toLowerCase() + "', id_cliente ="
                    + prod.getCliente().getCodigo() + ", prod ='" + produtos +", quant ='" + quantidades + "' WHERE id =" + prod.getID());

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    public static boolean deletaOrcamento(int cod) {

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(url, usuario, senha);

//        System.out.println("Conexão realizada com sucesso.");

            Statement stm = con.createStatement();

            stm.executeUpdate("DELETE FROM orcamento VALUES WHERE id =" + cod);
            //stm.executeUpdate("DELETE FROM tabela");

            con.close();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        } finally {
            try {
                con.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
